Interrupt Verification via Thread Verification
نویسندگان
چکیده
Most of the research effort towards verification of concurrent software has focused on multithreaded code. On the other hand, concurrency in low-end embedded systems is predominantly based on interrupts. Low-end embedded systems are ubiquitous in safety-critical applications such as those supporting transportation and medical automation; their verification is important. Although interrupts are superficially similar to threads, there are subtle semantic differences between the two abstractions. This paper compares and contrasts threads and interrupts from the point of view of verifying the absence of race conditions. We identify a small set of extensions that permit thread verification tools to also verify interrupt-driven software, and we present examples of source-to-source transformations that turn interrupt-driven code into semantically equivalent thread-based code that can be checked by a thread verifier. Finally, we demonstrate a proofof-concept program transformation tool that converts interrupt-driven sensor network applications into multithreaded code, and we use an existing tool to find race conditions in these applications.
منابع مشابه
Thread Verification vs. Interrupt Verification
Interrupts are superficially similar to threads, but there are subtle semantic differences between the two abstractions. This paper compares and contrasts threads and interrupts from the point of view of verifying the absence of race conditions. We identify a small set of extensions that permit thread verification tools to also verify interrupt-driven software, and we present examples of source...
متن کاملModeling and Verifying Abstract Multithreaded Systems
Multithreaded systems consist of programs (threads), an operating system and one or more processors. We describe abstraction techniques from programs, the operating system and processors to extract a finite state machine that reflects the thread manager in its system context. To assure the correctness and fairness of the concurrent execution, we apply common verification techniques, in particul...
متن کاملBicolanoMT: a Formalization of Multi-Threaded Java at Bytecode Level
This paper describes a formalization of multi-threaded Java bytecode in Coq. The formalization builds on the existing Bicolano formalization for sequential Java bytecode – which captures basically all aspects of sequential bytecode supported by the CLDC (Java for mobile phones) platform. We use a special extension framework to extend the existing formalization in a systematic way. The formaliza...
متن کاملPower Analysis of Interrupt-Driven and Multi-Threaded Programs
1 Abstract We aim to combine software verification techniques to achieve static power analysis for interrupt-driven and multi-threaded programs, which are used in many networked embedded systems. The goal is achieved by 1) control flow analysis, 2) instruction-level power estimation/emulation, 3) thread-context model, and 4) counterexample guided refinement. One essential requirement for sensor...
متن کاملModular Verification of Finite Blocking in Non-terminating Programs
Most multi-threaded programs synchronize threads via blocking operations such as acquiring locks or joining other threads. An important correctness property of such programs is for each thread to make progress, that is, not to be blocked forever. For programs in which all threads terminate, progress essentially follows from deadlock freedom. However, for the common case that a program contains ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید
ثبت ناماگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید
ورودعنوان ژورنال:
- Electr. Notes Theor. Comput. Sci.
دوره 174 شماره
صفحات -
تاریخ انتشار 2007